/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.edu.fatec.ads.classes;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author Bruno Moura
 */
@Entity
@Table(name="CARTAO_PESSOA")
public class VinculoCartaoPessoa extends AbstractTO{

    private VinculoCartaoPessoaPK vinculoCartaoPessoaPK;
    private Date dataAtivacao;
    private Date dataDesativacao;

    public VinculoCartaoPessoa() {
        vinculoCartaoPessoaPK = new VinculoCartaoPessoaPK();
    }

    /**
     * @return the vinculoCartaoPessoaPK
     */
    @EmbeddedId
    public VinculoCartaoPessoaPK getVinculoCartaoPessoaPK() {
        return vinculoCartaoPessoaPK;
    }

    /**
     * @param vinculoCartaoPessoaPK the vinculoCartaoPessoaPK to set
     */
    public void setVinculoCartaoPessoaPK(VinculoCartaoPessoaPK vinculoCartaoPessoaPK) {
        this.vinculoCartaoPessoaPK = vinculoCartaoPessoaPK;
    }

    /**
     * @return the dataAtivacao
     */
    @Temporal(TemporalType.DATE)
    @Column(name="dt_ativacao", nullable=false)
    public Date getDataAtivacao() {
        return dataAtivacao;
    }

    /**
     * @param dataAtivacao the dataAtivacao to set
     */
    public void setDataAtivacao(Date dataAtivacao) {
        this.dataAtivacao = dataAtivacao;
    }

    /**
     * @return the dataDesativacao
     */
    @Temporal(TemporalType.DATE)
    @Column(name="dt_desativacao")
    public Date getDataDesativacao() {
        return dataDesativacao;
    }

    /**
     * @param dataDesativacao the dataDesativacao to set
     */
    public void setDataDesativacao(Date dataDesativacao) {
        this.dataDesativacao = dataDesativacao;
    }

    @Transient
    public Cartao getCartao(){
        return this.getVinculoCartaoPessoaPK().getCartao();
    }

    public void setCartao(Cartao cartao){
        this.getVinculoCartaoPessoaPK().setCartao(cartao);
    }

    @Transient
    public Pessoa getPessoa(){
        return this.getVinculoCartaoPessoaPK().getPessoa();
    }

    public void setPessoa(Pessoa pessoa){
        this.getVinculoCartaoPessoaPK().setPessoa(pessoa);
    }

    @Override
    public String toString() {
        return "VinculoCartaoPessoa[cartao=" + this.getCartao().getCodigo()
                + ", pessoa=" + this.getPessoa().getCodigo()
                + ", dataAtivacao=" + this.getDataAtivacao()
                + ", dataDesativacao=" + this.getDataDesativacao()
                + "]";
    }

    @Override
    @Transient
    public Serializable getPK() {
       return this.getVinculoCartaoPessoaPK();
    }

    @Override
    public void setPK(Serializable identifier) {
        this.setVinculoCartaoPessoaPK((VinculoCartaoPessoaPK) identifier);
    }

}
